import { myhttp } from '@/utils/request'
import { FilterValue, QueryConfig } from '@/common/dayu-common'

interface Employee{
  id : number;
  /** 所属部门*/
  deptId? : number;
  /** 姓名*/
  name? : string;
  /** 证件类型*/
  idCardType? : string;
  /** 身份证号*/
  idCardNumber? : string;
  /** 性别*/
  sex? : string;
  sexCaption? : string;
  /** 出生日期*/
  birthday? : string;
  /** 籍贯*/
  birthplace? : string;
  /** 电话*/
  mobile? : string;
  /** 邮箱*/
  email? : string;
  /** 岗位*/
  jobTitle? : string;
  /** 学历*/
  education? : string;
  /** 毕业学校*/
  school? : string;
  /** 专业*/
  speciality? : string;
  /** 备注*/
  remarks? : string;
  /** 顺序号*/
  ordnum? : number;
  /** 锁定状态*/
  rowLock? : number;
}

interface EmployeeStats{
  key?:string;
  aggregateGroupName?:string;
  aggregateGroupLabel?:string;
  /**性别*/
  sex?:string;

    /**性别 记录条数*/
    sexRowsCount? : number;
}

/**对EmployeeStats的二次封装，去掉了分组字段，只保留数值，并增加了部分行转列属性*/
class EmployeeStatData{
  /**性别 记录条数*/
  sexRowsCount? : number;
  sexRowsCount1? :number;
  sexRowsCount2? : number;
  sexRowsCount3? : number;
}

class EmployeeService{
  controller = 'employee';
  
  /**获取一个Employee对象*/
  getEmployee(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getEmployee`,{id: id});
  }
  
  /**获取一个EntityBO<Employee>对象*/
  getEmployeeBO(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getEmployeeBO`,{id: id});
  }

  /**保存一个对象*/
  saveEmployee(item : Employee) {
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/saveEmployee`,{item: JSON.stringify(item)});
  }

    /**更新单个字段的值
     *
     * @param id 记录id
     * @param propName 属性名称
     * @param value 属性值
    */
    updateProp(id:number, propName:string, value:any){
        return myhttp.post(`${myhttp.urlprix}base/${this.controller}/updateProp`,{id: id,propName:propName,value:value});
    }


  /**修改数据锁定状态
   * @param id 记录id，另-1表示对整表进行锁定
   * @param lockState
   * @param authTag 权限类型，参考 AuthTag
  **/
  changeLockState(id:number, lockState:number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/changeLockState`,{id: id, lockState:lockState});
  }

  /**删除一条记录*/
  deleteEmployee(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/deleteEmployee`,{id : id});
  }

  /**根据条件查询*/
  getEmployeeExListAndStats(deptId:number, recursion:boolean, filters:Array<FilterValue>, queryConfig:QueryConfig) {
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getEmployeeExListAndStats`,{deptId:deptId, recursion:recursion, filters: JSON.stringify(filters), queryConfig: JSON.stringify(queryConfig)});
  }

  /**导出并下载excel文件*/
  exportEmployeeExListAndStats(deptId:number, recursion:boolean, filters:Array<FilterValue>, queryConfig:QueryConfig) {
    return myhttp.post(`${myhttp.urlprix}xls/${this.controller}/getEmployeeExListAndStats`,{deptId:deptId, recursion:recursion, filters: JSON.stringify(filters), queryConfig: JSON.stringify(queryConfig)});
  }
}

const employeeService = new EmployeeService();

export {Employee, EmployeeStats, EmployeeStatData, employeeService}